Benjamin Otte [Mon, 20 Aug 2018 22:44:47 +0000 (00:44 +0200)]
accel: Add display arg to gtk_accelerator_parse_with_keycode()
It was using the default display unconditionally.
Benjamin Otte [Mon, 20 Aug 2018 17:45:51 +0000 (19:45 +0200)]
accelerators: Make gtk_accelerator_parse() return TRUE/FALSE
A parse function should return success or not. So do that.
Benjamin Otte [Mon, 20 Aug 2018 07:18:59 +0000 (09:18 +0200)]
shortcuttrigger: Add hash(), equal(), and compare() functions
Those are useful for putting triggers in hash tables or getting sorted
output.
Benjamin Otte [Mon, 20 Aug 2018 04:42:22 +0000 (06:42 +0200)]
shortcuts: Mananage managed shortcuts with a custom model
Reduce the amount of special casing by using a list model
for global and managed shortcuts, too.
This way, the ListModel API will work for the ShortcutController in the
GtkShortcutManager and GtkRoot.
The only special case remaining is shortcut activation, which needs to
pass the right widget to the controller in the global/managed case.
Benjamin Otte [Mon, 20 Aug 2018 02:45:10 +0000 (04:45 +0200)]
shortcutaction: Add gtk_shortcut_action_to_string()
For all but the callback action, we can print something useful.
Benjamin Otte [Mon, 20 Aug 2018 02:18:28 +0000 (04:18 +0200)]
widget: Keep keybindings as a GListStore
This way, we can use shortcut_controller_new_for_model() and avoid all
the special casing about run_class.
Benjamin Otte [Sun, 19 Aug 2018 05:12:00 +0000 (07:12 +0200)]
shortcutcontroller: Add gtk_shortcut_controller_new_for_model()
This is mainly for internal use, but I can't see a reason to not have it
public for people who want to maintain their own lists.
I'm sure gnome-builder will never ever find a way to misuse it.
Benjamin Otte [Sun, 19 Aug 2018 04:26:50 +0000 (06:26 +0200)]
shortcutcontroller: Implement GListModel
After all, this controller is a list of shortcuts.
Benjamin Otte [Sat, 18 Aug 2018 18:01:27 +0000 (20:01 +0200)]
gtk-demo: Port the sliding puzzle demo to shortcuts
Benjamin Otte [Sat, 18 Aug 2018 18:01:43 +0000 (20:01 +0200)]
shortcut: Change the API for creating shortcuts
When creating shortcuts, there almost always are a trigger and an action
available for use. So make gtk_shortcut_new() take those as arguments.
Also add gtk_shortcut_new_with_arguments() so people can easily pass
those in, too.
Benjamin Otte [Sat, 18 Aug 2018 05:32:11 +0000 (07:32 +0200)]
shortcut: Add GtkShortcutAction
Similar to GtkShortcutTrigger, GtkShortCutAction provides all the
different ways to activate a shortcut.
So far, these different ways are supported:
- do nothing
- Call a user-provided callback
- Call gtk_widget_activate()
- Call gtk_widget_mnemonic_activate()
- Emit an action signal
- Activate an action from the widget's action muxer
- Activate a GAction
Benjamin Otte [Fri, 17 Aug 2018 04:43:27 +0000 (06:43 +0200)]
accelgroup: Remove unneeded APIs
After the removal of GtkAccelMap, these things are no longer necessary.
Emmanuele Bassi [Thu, 6 Feb 2020 16:02:44 +0000 (16:02 +0000)]
gtk: Remove GtkAccelMap
Now that accel paths are gone, the object managing them isn't needed
anymore either.
Benjamin Otte [Fri, 17 Aug 2018 03:07:32 +0000 (05:07 +0200)]
gtk: Remove accel paths
It's an outdated technology now that everybody is using GActionGroups.
If somebody wanted to support changeable shortcuts, they'd need to
reintroduce it in another way.
Benjamin Otte [Thu, 16 Aug 2018 05:55:49 +0000 (07:55 +0200)]
Remove GtkMnemonicHash
It's not used anymore.
Emmanuele Bassi [Thu, 6 Feb 2020 15:54:57 +0000 (15:54 +0000)]
window: Remove all old mnemonic handling API
Emmanuele Bassi [Thu, 6 Feb 2020 15:43:55 +0000 (15:43 +0000)]
Add GtkShortcutManager
This adds an interface for taking care of shortcut controllers with
managed scope.
Only GtkWindow currently implements this interface, so we need to ensure
that we check if any top-level widget we reach is a shortcuts manager
before we call into it.
Benjamin Otte [Thu, 16 Aug 2018 03:43:37 +0000 (05:43 +0200)]
label: Implement mnemonics using shortcuts
Benjamin Otte [Thu, 16 Aug 2018 03:18:01 +0000 (05:18 +0200)]
shortcut: Add gtk_shortcut_set_mnemonic_activate()
Makes the shortcut call gtk_widget_mnemonic_activate() upon activation.
Benjamin Otte [Thu, 16 Aug 2018 01:59:24 +0000 (03:59 +0200)]
shortcuttrigger: Add support for mnemonics
Mnemonics need to be triggered with help from the controllers (who
determine the modifiers). Support for that has been added, too.
Mnemonics do not use this yet though.
Benjamin Otte [Wed, 15 Aug 2018 04:43:31 +0000 (06:43 +0200)]
window: Put F10 accelerator into its own shortcut controller
So instead of relying on gtk_window_activate_key(), it's now using
proper infrastructure.
Benjamin Otte [Wed, 15 Aug 2018 04:19:52 +0000 (06:19 +0200)]
window: Get rid of public APIs that shouldn't be
Event controllers should have replaced all of them.
And if they haven't, apps need to fix their code (I'm
looking at you Gimp).
Benjamin Otte [Wed, 15 Aug 2018 03:50:28 +0000 (05:50 +0200)]
gdk: Remove GDK_RELEASE_MASK
It was only ever supported by keybindings and those are gone now.
Benjamin Otte [Sat, 11 Aug 2018 23:40:03 +0000 (01:40 +0200)]
gtk-demo: Add a dumb demo for shortcut triggers
Benjamin Otte [Mon, 13 Aug 2018 14:02:27 +0000 (16:02 +0200)]
shortcutcontroller: Add GtkShortcutScope
Allow setting the scope for a controller. The scope determines at what
point in event propagation the shortcuts will be activated.
Local scope is the usual activation, global scope means that the root
widget activates the shortcuts - ie they are activated at the very
start of event propagation (for global capture events) or the very end
(for global bubble events).
Managed scope so far is unimplemented.
This is supposed to be used to replace accelerators and mnemonics.
Benjamin Otte [Mon, 13 Aug 2018 03:45:12 +0000 (05:45 +0200)]
shortcuttrigger: Add gtk_shortcut_trigger_to_label()
Provide a user-presentable string.
Benjamin Otte [Mon, 13 Aug 2018 03:19:05 +0000 (05:19 +0200)]
accelgroup: Add gtk_accel_group_print_label()
Benjamin Otte [Mon, 13 Aug 2018 02:59:49 +0000 (04:59 +0200)]
accellabel: Move gtk_accelerator_get_label() code
The function lives in gtkaccelgroup.c, so there's no need to have that
call a private function in another source file. Instead, make that
other source file call gtk_accelerator_get_label() instead.
Benjamin Otte [Mon, 13 Aug 2018 02:51:03 +0000 (04:51 +0200)]
accellabel: Get rid of class variables
We can just look them up as-needed, no need to cache them.
Benjamin Otte [Sun, 12 Aug 2018 20:07:27 +0000 (22:07 +0200)]
gtk: Remove bindings
The whole binding functionality is now handled by shortcuts.
Matthias Clasen [Sun, 15 Mar 2020 03:42:38 +0000 (23:42 -0400)]
event controller focus: drop include
This header is not needed here, and it is going away.
Emmanuele Bassi [Thu, 6 Feb 2020 15:01:18 +0000 (15:01 +0000)]
Remove bindings activation from GtkEventControllerKey
We're going to use shortcuts soon.
Emmanuele Bassi [Thu, 6 Feb 2020 15:00:50 +0000 (15:00 +0000)]
popover: Remove unused include
Matthias Clasen [Tue, 17 Mar 2020 21:24:09 +0000 (17:24 -0400)]
popover: Add keynav keybindings
The shortcut controllers are limited to same-native,
so we need to duplicate the Tab and arrow key bindings
for focus handling, as well as the Enter bindings for
activation.
Emmanuele Bassi [Thu, 6 Feb 2020 15:00:31 +0000 (15:00 +0000)]
popovermenu: Port to shortcuts
Emmanuele Bassi [Thu, 6 Feb 2020 15:00:02 +0000 (15:00 +0000)]
passwordentry: Remove unused include
Emmanuele Bassi [Thu, 6 Feb 2020 14:59:31 +0000 (14:59 +0000)]
entry: Remove unused include
Benjamin Otte [Sun, 12 Aug 2018 23:52:04 +0000 (01:52 +0200)]
accelgroup: Actually have a default mod mask
Don't just use a value without initializing it.
Benjamin Otte [Sun, 12 Aug 2018 19:32:42 +0000 (21:32 +0200)]
treeview: Redo event forwarding hack
Reorder the event controllers so that key forwarding to the search
entries really happens after shortcut triggering.
Benjamin Otte [Sun, 12 Aug 2018 19:15:37 +0000 (21:15 +0200)]
combobox: Redo key event forwarding hack
Instead of manualling invoking bindings, we now reorder event
controllers inside the treemenu, so that shortcuts run before the event
forwarding.
Emmanuele Bassi [Thu, 6 Feb 2020 14:21:10 +0000 (14:21 +0000)]
widget: Add private accessor to event controllers
Benjamin Otte [Sun, 12 Aug 2018 15:07:23 +0000 (17:07 +0200)]
iconview: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 14:57:37 +0000 (16:57 +0200)]
infobar: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 14:55:43 +0000 (16:55 +0200)]
label: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 14:47:58 +0000 (16:47 +0200)]
listbox: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 14:05:45 +0000 (16:05 +0200)]
notebook: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 13:53:45 +0000 (15:53 +0200)]
scale: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 13:50:45 +0000 (15:50 +0200)]
scalebutton: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 13:48:18 +0000 (15:48 +0200)]
scrolledwindow: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 13:44:45 +0000 (15:44 +0200)]
searchentry: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 13:42:01 +0000 (15:42 +0200)]
shortcutssection: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 13:41:53 +0000 (15:41 +0200)]
shortcutswindow: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 01:45:09 +0000 (03:45 +0200)]
flowbox: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 01:45:03 +0000 (03:45 +0200)]
paned: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 01:26:35 +0000 (03:26 +0200)]
spinbutton: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 01:24:26 +0000 (03:24 +0200)]
textview: Port bindings to use shortcuts
Benjamin Otte [Sun, 12 Aug 2018 01:15:00 +0000 (03:15 +0200)]
filechooserwidget: Port bindings to use shortcuts
Benjamin Otte [Sat, 11 Aug 2018 23:38:50 +0000 (01:38 +0200)]
shortcutcontroller: Add gtk_shortcut_controller_add_shortcut()
... and gtk_shortcut_controller_remove_shortcut().
Benjamin Otte [Sat, 11 Aug 2018 15:42:19 +0000 (17:42 +0200)]
shortcutcontroller: Add private API for running class shortcuts
We don't want regular users to be able to run class shortcuts in their
controllers, so we have to special case that.
Benjamin Otte [Sat, 11 Aug 2018 15:22:22 +0000 (17:22 +0200)]
treeview: Port bindings to use shortcuts
Benjamin Otte [Sat, 11 Aug 2018 15:22:10 +0000 (17:22 +0200)]
widget: Port bindings to use shortcuts
Benjamin Otte [Wed, 8 Aug 2018 20:16:24 +0000 (22:16 +0200)]
dialog: Port binding to use shortcuts
Emmanuele Bassi [Wed, 5 Feb 2020 17:13:44 +0000 (17:13 +0000)]
text: Port to widget shortcuts
Emmanuele Bassi [Wed, 5 Feb 2020 17:08:37 +0000 (17:08 +0000)]
Allow installing bindings bound to actions
This is just convenience code around GtkShortcut, just like bindings for
signal emission and callback invocation.
Emmanuele Bassi [Wed, 5 Feb 2020 17:08:14 +0000 (17:08 +0000)]
shortcut: Add action activation
Emmanuele Bassi [Wed, 5 Feb 2020 17:06:51 +0000 (17:06 +0000)]
bindings: Export action activation internally
We're going to use it, just like we use the signal emission code.
Benjamin Otte [Wed, 8 Aug 2018 17:10:27 +0000 (19:10 +0200)]
shortcut: Add gtk_shortcut_set_callback()
... and gtk_widget_class_add_binding() to go with it.
This allows shortcuts to invoke manually added callbacks.
Benjamin Otte [Sun, 5 Aug 2018 02:30:15 +0000 (04:30 +0200)]
combobox: Port bindings to use shortcuts
Benjamin Otte [Sun, 5 Aug 2018 02:20:58 +0000 (04:20 +0200)]
assistant: Port bindings to use shortcuts
Benjamin Otte [Sun, 5 Aug 2018 02:10:11 +0000 (04:10 +0200)]
trigger: Add an alternative trigger
And use it.
I just added it to GtkWidget just to show that I can.
The real reason I want it is for gamepad/joystick triggers
in games, so that it becomes possible to select 2 different
triggers (gamepad and keyboard) for the same shortcut.
Matthias Clasen [Sun, 15 Mar 2020 13:49:50 +0000 (09:49 -0400)]
shortcut: Add GtkShortcutTrigger
Triggers are meant to describe how to trigger a shortcut.
So far only a keyval + modifiers trigger exists.
Benjamin Otte [Sat, 4 Aug 2018 10:30:53 +0000 (12:30 +0200)]
window: Port bindings to use shortcuts
Benjamin Otte [Sat, 4 Aug 2018 10:27:30 +0000 (12:27 +0200)]
bindings: Add more variant types
Also marshal types that the code in gtkbindings.c doesn't use. These
will be used by gtk_widget_class_add_binding_signal().
Benjamin Otte [Sat, 4 Aug 2018 10:16:00 +0000 (12:16 +0200)]
widget: Add gtk_widget_class_add_shortcut()
This allows adding shortcuts as a replacement for keybindings.
Benjamin Otte [Sat, 4 Aug 2018 10:14:13 +0000 (12:14 +0200)]
gtk: Add GtkShortcut
This is the base class for what is about to take over all sorts of
keyboard shortcuts. The initial version barely deals with keybindings.
Benjamin Otte [Sat, 4 Aug 2018 09:01:32 +0000 (11:01 +0200)]
bindings: Split out function to invoke an action signal
We want to use that in shortcuts later.
Benjamin Otte [Mon, 30 Jul 2018 04:02:20 +0000 (06:02 +0200)]
shortcutcontroller: Introduce
This is a very barebones controller that currently does nothing but
activate the binding signals. Yay.
And because we have bindings on every widget (Yes, a GtkGrid has a
keybinding - 2 in fact), we need that controller everywhere.
Benjamin Otte [Tue, 31 Jul 2018 20:21:17 +0000 (22:21 +0200)]
bindings: Make gtk_binding_parse_signal() use GVariantBuilder
And because it's the last user of GtkBindingArg and
gtk_binding_entry_add_signall(), also remove those two.
Benjamin Otte [Tue, 31 Jul 2018 19:34:52 +0000 (21:34 +0200)]
bindings: Parse into GVariantBuilder directly
Avoids the indirection via GtkBindingArg
Benjamin Otte [Tue, 31 Jul 2018 19:32:34 +0000 (21:32 +0200)]
bindings: Add gtk_binding_entry_add_signal_variant()
This function is the replacement for
gtk_binding_entry_add_signall().
The GVariant will be demarshalled and passed to the action signal upon
binding activation. The same rules apply as used to apply for
GtkBindingArg, in that long, double and string args are now replaced by
"x", "d" and "s" variant types.
Benjamin Otte [Tue, 31 Jul 2018 18:09:03 +0000 (20:09 +0200)]
bindings: Replace GtkBindingArg arguments with GVariant
This only replaces invocation, not yet parsing.
Matthias Clasen [Thu, 19 Mar 2020 01:20:21 +0000 (01:20 +0000)]
Merge branch 'wip/chergert/speedup-char_is_invisible' into 'master'
textbtree: short-circuit visibility check when possible
See merge request GNOME/gtk!1534
Christian Hergert [Wed, 18 Mar 2020 18:32:46 +0000 (11:32 -0700)]
textbtree: short-circuit visibility check when possible
If we have never seen a GtkTextTag in the GtkTextTagTable with the
invisible bit set, then we do not need to go through the process of
checking the accumulated tags.
Not using invisible tags is overwhelmingly the common case.
Matthias Clasen [Wed, 18 Mar 2020 12:28:15 +0000 (12:28 +0000)]
Merge branch 'wip/jimmac/adwaitadark-lighten-switches' into 'master'
Adwaita: dark switches/check/radios
Closes #2461
See merge request GNOME/gtk!1532
Matthias Clasen [Wed, 18 Mar 2020 12:27:08 +0000 (12:27 +0000)]
Merge branch 'wip/chergert/textview-fix-gdk_event_unref' into 'master'
textview: use gdk_event_unref()
Closes #2520
See merge request GNOME/gtk!1531
Jakub Steiner [Fri, 6 Mar 2020 12:13:37 +0000 (13:13 +0100)]
Adwaita: dark switches/check/radios
- lighten up radios, switches and checkboxes
Fixes https://gitlab.gnome.org/GNOME/gtk/issues/2461
Matthias Clasen [Wed, 18 Mar 2020 01:48:45 +0000 (21:48 -0400)]
emojichooser: Fix keynav
Make arrow and tab keys work in the
variations popover again.
Matthias Clasen [Wed, 18 Mar 2020 00:46:57 +0000 (20:46 -0400)]
window: Set min size properly
When we are mapping the window, we need to compute
a proper min size, otherwise the 1, 1 sticks and
makes all windows shrinkable to nothing.
Matthias Clasen [Wed, 18 Mar 2020 00:32:23 +0000 (20:32 -0400)]
Revert "Adwaita: dark switches/check/radios"
This reverts commit
435992600f907d58cc2f9ae52a969a49d2f9f286.
This causes warnings from the CSS parser.
Matthias Clasen [Tue, 17 Mar 2020 21:24:09 +0000 (17:24 -0400)]
popover: Add keynav keybindings
The shortcut controllers are limited to same-native,
so we need to duplicate the Tab and arrow key bindings
for focus handling, as well as the Enter bindings for
activation.
Christian Hergert [Tue, 17 Mar 2020 20:23:57 +0000 (13:23 -0700)]
textview: use gdk_event_unref()
Fixes #2520
Matthias Clasen [Tue, 17 Mar 2020 20:23:03 +0000 (16:23 -0400)]
Assorted migration guide updates
Mention GdkEvent, GdkPopup, GdkToplevel, GtkIconTheme
changes.
Jakub Steiner [Tue, 17 Mar 2020 10:05:26 +0000 (11:05 +0100)]
Merge branch 'wip/jimmac/adwaitadark-lighten-switches'
Jakub Steiner [Fri, 6 Mar 2020 12:13:37 +0000 (13:13 +0100)]
Adwaita: dark switches/check/radios
- lighten up radios, switches and checkboxes
Fixes https://gitlab.gnome.org/GNOME/gtk/issues/2461
Matthias Clasen [Tue, 17 Mar 2020 05:12:12 +0000 (05:12 +0000)]
Merge branch 'emoji-chooser-fixes' into 'master'
Emoji chooser fixes
See merge request GNOME/gtk!1530
Matthias Clasen [Tue, 17 Mar 2020 04:28:57 +0000 (00:28 -0400)]
Adwaita: Fix focus in emoji chooser
Matthias Clasen [Tue, 17 Mar 2020 04:07:37 +0000 (00:07 -0400)]
emojichooser: Make the variation picker work again
We can't attach popovers to unsuspecting widget anymore.
Emmanuele Bassi [Mon, 16 Mar 2020 17:08:53 +0000 (17:08 +0000)]
Merge branch 'respect-text-len-gtk4' into 'master'
imcontextwayland: Honour len argument in gtk_im_context_wayland_set_surrounding
See merge request GNOME/gtk!1529
Robert Mader [Mon, 16 Mar 2020 15:53:18 +0000 (16:53 +0100)]
imcontextwayland: Honour len argument in gtk_im_context_wayland_set_surrounding
Clients may pass not `NULL`-terminated strings as the function takes a
`len` argument. Use that argument.
Matthias Clasen [Sun, 15 Mar 2020 00:47:03 +0000 (00:47 +0000)]
Merge branch 'x11-props' into 'master'
Drop X11-specific properties
See merge request GNOME/gtk!1526